package com.zyb.warehouse.service.impl;

import com.zyb.warehouse.common.Result;
import com.zyb.warehouse.dto.Page;
import com.zyb.warehouse.dto.vo.StoreCountVo;
import com.zyb.warehouse.entity.Store;
import com.zyb.warehouse.mapper.StoreMapper;
import com.zyb.warehouse.service.StoreService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * Description:仓库业务层接口实现
 */
@Service
public class StoreServiceImpl implements StoreService {

    @Autowired
    private StoreMapper storeMapper;

    /**
     * 查询所有仓库
     *
     * @return
     */
    public List<Store> queryAllStore() {
        return storeMapper.selectAllStore();
    }

    /**
     * 查询每个仓库存储的商品的数量
     *
     * @return
     */
    public List<StoreCountVo> getStoreProductTotal() {
        return storeMapper.selectStoreProductTotal();
    }

    /**
     * 分页查询仓库
     *
     * @param page
     * @param store
     * @return
     */
    public Page pageStore(Page page, Store store) {
        //获取仓库总记录数
        Integer count = storeMapper.selectStoreTotal(store);
        //分页查询
        List<Store> storeList = storeMapper.pageStore(page, store);
        //属性拷贝
        page.setTotalNum(count);
        page.setResultList(storeList);
        return page;
    }

    /**
     * 查询仓库编号是否重复
     *
     * @param storeNum
     * @return
     */
    public Result queryStoreByNum(String storeNum) {
        Store store = storeMapper.selectStoreByNum(storeNum);
        return Result.ok(store == null);
    }

    /**
     * 添加仓库
     *
     * @param store
     * @return
     */
    public Result addStore(Store store) {
        Integer i = storeMapper.addStore(store);
        if (i > 0) {
            return Result.ok("添加成功");
        }
        return Result.err(Result.CODE_ERR_BUSINESS, "添加失败");
    }

    /**
     * 修改仓库
     *
     * @param store
     * @return
     */
    public Result updateStore(Store store) {
        Integer i = storeMapper.updateStore(store);
        if (i > 0) {
            return Result.ok("修改成功");
        }
        return Result.err(Result.CODE_ERR_BUSINESS, "修改失败");
    }

    /**
     * 删除仓库
     *
     * @param storeId
     * @return
     */
    public Result removeStore(Integer storeId) {
        Integer i = storeMapper.deleteStore(storeId);
        if (i > 0) {
            return Result.ok("删除成功");
        }
        return Result.err(Result.CODE_ERR_BUSINESS, "删除失败");
    }
}
